package com.hoshino.momochi.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hoshino.momochi.model.domain.Message;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface MessageMapper extends BaseMapper<Message> {

    /**
     * 应按照 发送者的删除状态进行筛选 即 高位 为 0 isDelete值可以为 00 01 两种
     *
     * @param sendId 发送者ID
     * @return 消息集合
     */
    List<Message> findMessagesBySendId(@Param("sendId") Long sendId);


    /**
     * @param pullId 接收者 ID
     * @return
     */
    List<Message> findMessageByPullId(@Param("pullId") Long pullId);

    /**
     * 根据用户ID 查询 与之相关的消息。
     *
     * @param uid 用户ID
     * @return
     */
    List<Message> findMessageByUserId(@Param("uid") Long uid);

    /**
     * 根据消息ID 删除 发送方 即 原 isDelete 可能值为 00 01 现 变为 10 11 即 old^(10)
     *
     * @param id
     */
    void updateByIDAndSend(@Param("id") Long id);

    void updateByIDAndPull(@Param("id") Long id);

    void addMessage(Message message);

    /**
     * 删除 isDelete = 1 的数据
     */
    void delIsDeleteAsTrue();

    /**
     * 获取 当前用户 与 指定用户的聊天记录
     *
     * @param aid
     * @param uid
     * @return
     */
    List<Message> getMessageByUser(Long aid, Long uid);
}
